package ru.compft.web.beans;

import org.springframework.util.CollectionUtils;
import ru.compft.common.cache.CacheCode;
import ru.compft.common.services.CacheService;
import ru.compft.web.WebConst;
import ru.compft.web.utils.FacesUtils;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * User: VVasiliev
 * Date: 03.08.12
 * Time: 9:43
 * Бин представляющий мэп системного кеша
 */
public class SystemCacheBean implements Serializable {
    private static final long serialVersionUID = 5189325129611926997L;

    private Map<String, Boolean> selectedCacheNames = new HashMap<String, Boolean>();

    public Map<String, Boolean> getSelectedCacheNames() {
        return selectedCacheNames;
    }

    public void setSelectedCacheNames(Map<String, Boolean> selectedCacheNames) {
        this.selectedCacheNames = selectedCacheNames;
    }

//    public Map<String, List> getAllCacheMap() {
//        // получаем сервис работы с кешем
//        final CacheService cacheService = (CacheService) FacesUtils.getSpringBean(WebConst.CACHE_SERVICE);
//        return cacheService.getAllCacheMap();
//    }

//    public Map<String, Integer> getAllCacheCount() {
//        // получаем сервис работы с кешем
//        final CacheService cacheService = (CacheService) FacesUtils.getSpringBean(WebConst.CACHE_SERVICE);
//        return cacheService.countAllCache();
//    }

    /**
     * Очищаем выбранные кеши
     */
//    public String clearSomeCaches() {
//        // получаем сервис работы с кешем
//        final CacheService cacheService = (CacheService) FacesUtils.getSpringBean(WebConst.CACHE_SERVICE);
//
//        if (!CollectionUtils.isEmpty(selectedCacheNames)) {
//
//            final List<CacheCode> cacheCodeListForClear = new ArrayList<CacheCode>();
//            for (Map.Entry<String, Boolean> entry : selectedCacheNames.entrySet()) {
//                if (entry.getValue()) {
//                    final CacheCode cacheCode = CacheCode.getByCode(entry.getKey());
//                    if (cacheCode != null) cacheCodeListForClear.add(cacheCode);
//                }
//            }
//            cacheService.clearSomeCaches(cacheCodeListForClear);
//        }
//        // очистим все выбранные чек-боксы
//        selectedCacheNames.clear();
//
//        return "/setting/cachesPage";
//    }
}
